Caçada aos Bugs

Para cada parte do código abaixo, indique qual das seguintes opções melhor descreve essa parte do código:

  1. Não há bugs no código; funciona conforme o esperado.
  2. Há um erro de sintaxe no código; não vai funcionar.
  3. A sintaxe é boa, mas o código produzirá um erro de tempo de execução durante a execução.
  4. Existe um bug semântico no código. A sintaxe é boa e o código será executado sem produzir um erro, mas não se comportará conforme descrito.

Ao tomar sua decisão, considere se o código funcionará para todas as entradas, não apenas para os valores específicos fornecidos na parte superior de cada parte do código.

1) Parte 1

Considere o código a seguir, que é projetado para "cortar" um valor x entre dois valores limites, lo e hi

Deve sempre imprimir exatamente um valor ao executar:

  • o valor de x se x estiver entre lo e hi,
  • o valor de lo se x for menor que lo, ou
  • o valor de hi se x for maior que hi Observe que se x for igual a lo, não há diferença entre imprimir lo ou x (já que eles têm o mesmo valor), e da mesma forma se x for igual a hi.

O código é o seguinte:

x = 12
lo = 6
hi = 9

if x < lo:
    print(lo)
if x > hi:
    print(hi)
else:
    print(x)

Qual das opções descreve melhor o código acima?





2) Parte 2

Considere o seguinte código, que é projetado para converter uma temperatura em graus Celsius em uma temperatura em graus Fahrenheit e imprimir o resultado:

celsius = 27
print(celisus * 1.8 + 32)

Qual das opções descreve melhor o código acima?





3) Parte 3

Considere o código a seguir, que é projetado para calcular o valor em uma conta bancária com uma taxa de juros r (composta anualmente) após n anos, com um investimento inicial de d dólares, e imprimir o resultado:

r = .06  # taxa de juros
d = 100  # dólares, investimento inicial
n = 20  # anos

print(d * (1 + r) ** n)

Qual das opções descreve melhor o código acima?